import { createStore } from 'vuex'
import { login, getinfo } from '~/api/manager'
import { setToken, removeToken } from '~/composables/auth'

// 创建一个新的 store 实例
// 用户信息管理
const store = createStore({
  state() {
    return {
      // 用户信息
      user: {},

      //测边宽度
      asideWidth: '200px'
    }
  },
  mutations: {
    // 设置用户信息
    SET_USERINFO(state, user) {
      state.user = user
    },
    // 展开/缩起侧边
    handleAsideWidth(state) {
      state.asideWidth = state.asideWidth === '200px' ? '64px' : '200px'
    }
  },
  actions: {
    //登录方法
    login({ commit }, { username, password }) {
      return new Promise(async (resolve, reject) => {
        await login(username, password)
          .then((res) => {
            setToken(res.access_token)
            // commit('SET_USERINFO', res)
            resolve(res)
          })
          .catch((err) => {
            reject(err)
          })
      })
    },
    // 获取当前登录用户信息
    getUserinfo({ commit }) {
      return new Promise((resolve, reject) => {
        getinfo()
          .then((res) => {
            commit('SET_USERINFO', res)
            resolve(res)
          })
          .catch((err) => {
            reject(err)
          })
      })
    },
    // 退出登录
    logout({ commit }) {
      // 移除token
      removeToken()
      // 清楚当前用户状态
      commit('SET_USERINFO', {})
    }
  }
})

export default store
